package com.ztom.top100;

/**
 * 跳跃游戏
 * <p>
 * https://leetcode-cn.com/problems/jump-game/
 *
 * @author ZhangTao
 */
public class Code25CanJump {

    public boolean canJump(int[] nums) {
        if (nums == null || nums.length == 0) {
            return false;
        }

        // 当前能跳的最远位置
        int rightMost = 0;
        for (int i = 0; i < nums.length; i++) {
            // 当前位置在能跳的最远位置内, 可以继续跳
            if (i <= rightMost) {
                // 更新最远位置
                rightMost = Math.max(rightMost, i + nums[i]);
                if (rightMost >= nums.length - 1) {
                    return true;
                }
            } else {
                // 不能继续跳了
                return false;
            }
        }
        return false;
    }
}
